;(function(){
    $.fn.imgSlide=function(option,obj){
        var setting={
            btnBox:"a",
            picBox:"b",
            textBox:"c",
            prevBtn:"prev",
            nextBtn:"next",
            effect:1,
            activeTriggerCls:'c',
            closeBtn:"close",
            intervalTime:3000
        };
        var opt=$.extend(setting,option||{});
    return this.each(function(){
        var flag=false;
        var t=$(this),btn=$(opt.btnBox,t),prev=$(opt.prevBtn,t),next=$(opt.nextBtn,t),pic=$(opt.picBox,t),text=$(opt.textBox),ul=pic.find("ul"),li=pic.find("li"),close=$(opt.closeBtn,t),effect=opt.effect;
        var li_w=li.width();
        var li_h=li.height();
        var cls=opt.activeTriggerCls;
        var timer,_idx=0;
        var li_len=pic.find("li").length;
        var time=opt.intervalTime;
        function play() {
            if (effect == 1) {
                if(!li.eq(_idx).is(":animated")){
                    li.eq(_idx).fadeIn(800).siblings().fadeOut(800);
                }
            }
            if (effect == 2) {
                ul.stop(false,true).animate({"left": -_idx * li_w}, 500,function(){
                })
            }
            if (effect == 3) {
                ul.stop().animate({"marginTop": -_idx * li_h}, 500)
            }
            setBtnStyle(_idx);
        }
        function goToFirst(){
            _idx=0;
            if(effect==3){
                li.first().clone().appendTo(ul);
                ul.stop().animate({"marginTop": -li_len * li_h}, 500,function(){
                    ul.find("li").last().remove();
                    ul.css("marginTop",0);

                })
            }else if(effect==2){
                li.first().clone().appendTo(ul);
                ul.stop(false,true).animate({"left": -li_len * li_w}, 500,function(){
                    ul.find("li").last().remove();
                    ul.css("left",0);

                })
            }else if(effect==1){
                play()
            }
            setBtnStyle(_idx);

        }
        function goToLast(){
            _idx=li_len-1;
            if(effect==3){
                li.last().clone().prependTo(ul);
                ul.stop().css({"marginTop":-li_h}).animate({"marginTop": 0}, 500,function(){
                    ul.find("li").first().remove();
                    ul.css({"marginTop":-_idx*li_h})
                })
            }else if(effect==2){
                li.last().clone().prependTo(ul);
                ul.css({"left":-li_w}).stop(false,true).animate({"left": -li_len}, 500,function(){
                    ul.find("li").first().remove();
                    ul.css("left",-_idx*li_w);

                })
            }else if(effect==1){
                play()
            }
            setBtnStyle(_idx);

        }
        function textChang(){
            text.find('p').eq(_idx).show().siblings().hide();
        }
        var html = '';
        for (var i = 1; i <= li_len; i++) {
            html += '<li><span>' + i + '</span></li>';
        }
        btn.empty().append(html);
        btn.find("li").eq(0).addClass(cls);

        btn.delegate("li", "mouseover", function () {
            clearInterval(timer);
            _idx = $(this).index();
            play();
        });
        prev.click(function(){
            _idx--;
            if(_idx==-1){
                goToLast();
            }else{
                play();
            }
            textChang();
        });
        next.click(function(){
            _idx++;
            if(_idx==li_len){
                goToFirst();
            }else{
                play();
            }
            textChang();
        });

        function setBtnStyle(i) {
            btn.find("li").eq(i).addClass(cls).siblings().removeClass(cls)
        }


        if (effect == 1) {
            li.css({"position": "absolute"});
            li.eq(0).show().siblings().hide();
        }
        if (effect == 2) {
            li.css({"float": "left"});
            ul.width((li_len+1) * li_w).css({"position":"absolute","left":0,"top":0});
        }
        if (effect == 3) {
            ul.height((li_len+1) * li_h).css({"position":"absolute","top":0,"left":0});
        }
        close.click(function(){
            $(obj).remove();
            $('.mask').fadeOut();
        });
        t.hover(function(){flag=true;},function(){flag=false;});
        timer = window.setInterval(function(){
            if(!flag){
                _idx++;
                if (_idx == li_len) {
                    goToFirst();
                }else{
                    play();
                }
            }
        },time);
    })
    };
})(jQuery);
